package com.oncallmng.service;

import com.oncallmng.model.Alert;
import com.oncallmng.model.Notification;
import com.oncallmng.model.User;

import java.util.List;

/**
 * 通知服务接口
 */
public interface NotificationService {
    
    /**
     * 发送告警通知
     * @param alert 告警信息
     * @param user 接收人
     */
    void sendAlertNotification(Alert alert, User user);
    
    /**
     * 发送告警升级通知
     * @param alert 告警信息
     * @param user 接收人
     */
    void sendEscalationNotification(Alert alert, User user);
    
    /**
     * 发送邮件通知
     * @param user 接收人
     * @param subject 主题
     * @param content 内容
     * @return 通知ID
     */
    String sendEmail(User user, String subject, String content);
    
    /**
     * 发送短信通知
     * @param user 接收人
     * @param content 内容
     * @return 通知ID
     */
    String sendSms(User user, String content);
    
    /**
     * 发送电话通知
     * @param user 接收人
     * @param content 内容
     * @return 通知ID
     */
    String sendPhone(User user, String content);
    
    /**
     * 发送应用推送通知
     * @param user 接收人
     * @param title 标题
     * @param content 内容
     * @return 通知ID
     */
    String sendAppPush(User user, String title, String content);
    
    /**
     * 更新通知状态
     * @param id 通知ID
     * @param status 状态
     */
    void updateStatus(String id, String status);
    
    /**
     * 获取用户未读通知
     * @param userId 用户ID
     * @return 通知列表
     */
    List<Notification> getUnreadNotifications(String userId);
    
    /**
     * 标记通知为已读
     * @param id 通知ID
     */
    void markAsRead(String id);
} 